perm filename NATURA[S84,JMC]1 blob sn#750934 filedate 1984-04-20 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	natura[s84,jmc]		Natural sentence generation
C00014 ENDMK
C⊗;
natura[s84,jmc]		Natural sentence generation

	Veronica Dahls April 19 lecture on logic grammars reminds
me that I find the present formalisms for parsing and generating
natural language entirely unnatural.  The power of the logic
programming techniques exhibited in her lecture suggest that
something much better can be done.  This was particularly excited
by an example, which I cannot precisely recall, involving relative
clauses.  For my present purpose the following sentence will do.

!!a1:	%2"The woman who came to George's party late will have lunch with us%1.

We are interested in both the generation and the parsing of this
sentence.  We will treat it as a problem of translation from and
to mentalese, where I'm going to invent the necessary mentalese
as I go along.  If it is similar to Fodor's mentalese this will be
a fortunate coincidence, because I don't know anything about mentalese
beyond the name.

	In the first place, we'll remark that the same English sentence
may be generated from many mentalese originals, and a mentalese original
may lead to many English sentences depending on the concrete situation.
It's connected with the question of why we bother with English.  Why
don't we speak mentalese and be done with it?

	The problem is that mentalese uses lots of internal proper names.
Thus the original of A may be something like

!!a2:	%2at(x99,e333)%1

where ⊗x99 is an internal name for the particular woman, ⊗e333 is
an internal name for the particular lunch, and ⊗at(x,e) asserts the
presence of a person at an event.  In fact ⊗at is a private form
not necessarily having the same meaning as a predicate in someone
else's mentalese.  Looking at it from a LISP programmer's point of
view, ⊗x99 and ⊗e333 are atom heads, i.e. pointers to the property
lists of the entities concerned.  The most important entities on
the property list are memories of the entity.
.<<eq is important, because we have to recognize identity of structures>>

	Therefore, the reason we don't speak mentalese is because
no two people have the same mentalese and no-one knows another
person's mentalese.  Indeed a person has very little metalinguistic
access to his own.  In general a mentalese expression is not
an object about which one can speak or even think.  To think
metalinguistically, we must either translate into a natural
language and think about the resulting phrase or we must use
concepts.  I won't have much to say about concepts, but to avoid
oversimplification, I'll assume there is something that can be
objects of thought and speech apart from mentalese entities
and natural language objects.  Sorry not to be more parsimonious,
but my opinion is that nature wasn't parsimonious in this matter.

	The whole problem of what mentalese is and how to translate
from it is too hard, so we'll concentrate on the above example -
how to translate ⊗at(x99,e333) into English.  Remember that our
idea is to explain the syntax and semantics of English solely in
terms of translation from and to mentalese.  It seems to me that
this way of looking at it would be unnecessarily complicated if 
we were only interested in simple
sentences like %2Fido is a dog%1 which can be directly related
to logical expressions.  However, I believe it will turn out to
be the simplest approach when we consider more complicated
sentences and the actual process of speaking and understanding.

	An alternate translation of ⊗at(x99,e333) is

!!a3:	%2She'll be there%1.

Indeed maybe

!!a4:	%2She came%1

might do if we imagine ⊗at(x99,e333) to have imbedded all time
information in the properties of ⊗e333 so that it can have the
same form regardless of whether the event is in the future or
the past.  After all the sentence may sit passively in storage
while the future becomes past.

	Let me confess that I keep taking an AI point of view.
Namely, I work back and forth between observations of natural
language, including mainly introspective observations, and
thoughts about how to design the commmunication structure of
an intelligent computer program.  Thus the idea that %2She
came%1 and %2She'll come%1 might be appropriate translations
of the same mentalese derives from the fact that it would be
convenient to design a program to work that way.

	Speaking involves solving the problem of giving another
person information represented internally in mentalese.  It always
involves thinking about what the hearer or reader knows or will
know.  It requires piling on enough description so that the
referents will be definite in the circumstances.

Problem: Children's speech is more self-expression, is more
reflexive, and often requires decryption, because the child
doesn't think about what his hearer knows.  A proper theory
should treat simple speech simply.  It looks like my approach
requires modification.

	Here's a fragment of unexecutable Prolog.  The basic predicate is

⊗say(<mentalese expression>,<situation>,<english expression>),

or ⊗say(m,s,e) for short.  Its higher level is

!!a4:	%2say(m,s,e) ← english(e),expresses(e,m),unambiguous(e,s)%1

except that this can't be executed, since its first goal
would be satisfied by any English expression.  It isn't immediately
obvious how to fix this.

	It seems that the key predicate is ⊗unambiguous, which is
probably best considered as ⊗¬ambiguous.  Subjectively it seems
that we monitor our speech or intended speech for ambiguity by
looking for unintended interpretations.  When we find one we
elaborate the phrase so as to exclude it.  This may not be the
only mechanism used to prevent ambiguity, but it seems to be an
important mechanism.  Another is the use of phrases which are
by default assumed unambiguous, e.g. proper names.  Sometimes
the default assumption is false and correction is required.

	In any case this raises the logical question of determining
when a description is ambiguous.  We could look for two interpretations,
but the standard situation in speech production we have one in mind
already so we are looking for an ⊗m1 that satisfies

!!a5:	%2expresses(e,m,s) ∧ expresses(e,m1,s) ∧ m1 ≠ m%1.

	This raises the general question of importing the finding of
models for facts into the language itself.  That is, we must
formalize within a theory the notion of model of a fragment
of the theory.  Most treatments of non-monotonic reasoning,
e.g. Reiter's and Bossu-Siegel, don't do this.  Circumscription
does it by using second order logic to import a part of the
model theory of the first order language into the language.

	Here's an example.  Consider the models of the first
order sentence

	%2p(a) ∧ (p(b) ∨ p(c))%1.

	In all of them, ⊗p(a) is true.  We can express this in second order
logic by

	%2∀p'.p'(a) ∧ (p'(b) ∨ p'(c)) ⊃ p'(a)%1.

	We can equally well quantify over minimal models, as circumscription
does, by quantifying over predicates.  Second order logic is weaker
than model theory, because it doesn't permit quantification over
domains.  That's why circumscribing equality is awkward.

	All right, so what are the tricks for looking for models or
just alternate interpretations of expressions.